package query

import "reflect"

// Aggregator 聚合器
type Aggregator interface {
	Queryer
	Aggregate(...Grouper)
}

// Grouper 组合器
type Grouper interface {
	Group(...Queryer)
}

// Queryer 查询器
type Queryer interface {
	Empty() bool
	Map() Map
}

type Map map[string]interface{}

func IsAnyEmpty(value any) bool {
	if value == nil {
		return true
	}
	reflectType := reflect.TypeOf(value)

	if reflectType == nil {
		return true
	}
	if reflectType.Kind() == reflect.String {
		return value.(string) == ""
	}

	return reflect.ValueOf(value).IsNil()
}
